package com.home_school_platform.dao;

import com.home_school_platform.entity.pojo.Message;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 消息Dao接口
 * @author Lin
 */
@Mapper
@Repository
public interface MessageDao {

    /**
     * 插入一条消息
     * @param message 消息实体
     * @return 影响行数
     * */
    Integer insertMessage(Message message);

    /**
     * 根据id删除消息
     * @param id 消息id
     * @return 影响行数
     * */
    Integer deleteMessageById(Integer id);

    /**
     * 更新消息
     * @param message 消息实体
     * @return 影响行数
     * */
    Integer updateMessage(Message message);

    /**
     * 根据学校查询所有信息
     * @param createSchoolId 学校id
     * @param currentPage 当前页
     * @param pageSize 每页显示多少条数据
     * @return 消息列表
     */
    List<Message> listMessageBySchool(@Param("createSchoolId") Integer createSchoolId,
                                      @Param("currentPage") Integer currentPage,
                                      @Param("pageSize") Integer pageSize);

    /**
     * 根据班级查询所有消息
     * @param teamId 班级id
     * @param currentPage 当前页
     * @param pageSize 每页显示多少条数据
     * @return 消息列表
     * */
    List<Message> listMessageByTeam(@Param("teamId") String teamId,
                                    @Param("currentPage")Integer currentPage,
                                    @Param("pageSize")Integer pageSize);

    /**
     * 根据关键字在学校范围内模糊查询
     * @param createSchoolId 学校id
     * @param keyword 关键字
     * @param currentPage 当前页
     * @param pageSize 每页显示多少条记录
     * @return 消息列表
     */
    List<Message> listMessageLike(@Param("createSchoolId") Integer createSchoolId,
                                   @Param("keyword") String keyword,
                                   @Param("currentPage") Integer currentPage,
                                   @Param("pageSize") Integer pageSize);

    /**
     * 统计班级消息数量
     * @param teamId 班级id
     * @return 班级消息数量
     */
    Integer countMessageByTeam(String teamId);


    /**
     * 统计学校消息数量
     * @param createSchoolId 学校id
     * @return 学校消息数量
     */
    Integer countMessageBySchool(Integer createSchoolId);
}
